<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>await表达式</title>
</head>
<body>
<script>
    /**
     * await右侧的表达式一般为promise对象,但也可以是其他的值
     * 如果表达式是promise对象,await返回的是promise成功的值
     * 如果表达式是其他值,直接将此值作为await的返回值
     *
     *注意:
     *  await必须写在async函数中,但是async函数中可以没有await
     *  如果await的promise状态是失败的,就会抛出异常,需要通过try...catch捕获处理
     */

    async function main() {
        let p = new Promise((resolve, reject) => {
            resolve('成功')
        })
        //1.右侧为promise且为成功的状态,返回的是成功的值
        let res = await p
        console.log(res)

        //2.右侧为非promise,返回的是其他值
        let res1 = await 20
        console.log(res1)

        //3.如果promise是失败的状态,需要用try-catch去捕获
        let p1 = new Promise((resolve, reject) => {
            reject('失败')
        })
        try {
            let res2 = await p1
        } catch (e) {
            console.log(e)
        }


    }

    main()
</script>

</body>
</html>